/*---------------------------------------------------------------------------------------------------------
ISpectrum

Author: Timoshenko D.M.
---------------------------------------------------------------------------------------------------------*/
#ifndef __ISPECTRUM_H__
#define __ISPECTRUM_H__

#ifndef __in
#define __in
#endif

#ifndef __out
#define __out
#endif

class _IppSpectrum {};

class ISpectrum 
{
public:
	//
	static ISpectrum* make(_IppSpectrum);
	//! Inits FFT enviroment for float vectors
	virtual void Init(int order, int shift, int winType) = 0;
	//! Clears all private members and their memory blocks
	virtual void Clear() = 0;

	////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	virtual void getSpectrogramAmpl(const short* pWave, double* pSpec,int wavLen=0) = 0;
	//
	virtual void getSpectrogramEnergy(const short* pWave, double* pSpec, int wavLen=0) = 0;
	//! Returns max number of shifts
	virtual int getShiftWindowsNumber(int wavLen, int shift) = 0;
	//! Returns FFT size
	virtual int getSizeWindow() = 0;
	//! Returns shift
	virtual int getShiftWindow() = 0;
	//! Returns [FFT size]/2 
	virtual int getPointsInSpectr() = 0;
	//! Returns pSpec size
	virtual int getSpectrogramSize(int wavLen) = 0;
	//
	virtual ~ISpectrum() {};
};

#endif